In an attempt to mitigate the impact of the growing gap between CPU performance and storage performance, many computer architectures implement hierarchical memory structures that place one or more higher speed memory caches between the CPU and the slower, disc storage or other from of storage. Generally speaking, memory caches are designed to contain copies of data that is also contained in slower disc storage. However, since cache memory is typically more expensive than disc storage, cache memories are typically limited in size. As such, various caching schemes are used to store frequently used data, or recently used data, or some other subset of all data. To manage the cache after it has become full, existing data is evicted when new data arrives. Caches can only improve performance if data blocks which have already been loaded in the cache are reused before being replaced. Thus, the management of cache capacity and data use is critical.
It is with these concepts in mind, among others, that aspects of the present disclosure were conceived.